          SUBROUTINE (OID,GEN,NUM.PGS,STATUS,PSTYLE.OVRD,PRT.ON,DRPT)
** Version# 60.0004[7] - 04/10/2015 - 11:33am - TSMITH - eclipse
*** V60.0005 Change - Custom Coding CUSTOM - 04/10/2015 - TSMITH - eclipse
** Copied from CBP SOE.PRINT.BID Version# 60.0004[6] - 04/07/2015 - 03:46pm - TSMITH - eclipse
*** V60.0004 Change - Custom Coding . - 04/10/2015 - TSMITH - eclipse
*** V60.0003 Change - Custom Coding . - 12/23/2014 - TSMITH - eclipse
*** V60.0002 Change - Custom Coding . - 02/18/2014 - TSMITH - eclipse
*** V60.0001 Change - Custom Coding . - 10/29/2013 - TSMITH - eclipse
*** V52.0008 Change - Custom Coding . - 02/20/2013 - TSMITH - eclipse
*** V52.0007 Change - Custom Coding CVZ972 - 02/05/2008 - HEATHERY - UPGRADE
*** V52.0006 Change - Custom Coding CVA790 - 06/26/2007 - SPANDA - UPGRADE
** Version# 52.0005[1] - 02/23/2007 - 10:29am - MARIB - eclipse
*** V52.0004 Change - Custom Coding CTQ190 - 07/31/2005 - JONW - UPGRADE
*** V52.0003 Change - Custom Coding CTC823 - 11/22/2005 - HAZELTON -eclipse
*** V52.0002 Change - Custom Coding AAA000 - 11/01/2005 - HAZELTON -eclipse
*** V52.0001 Change - Add FULL Ver 1 - 08/25/2005 - HAZELTON - eclipse
** Copied from BP SOE.PRINT.BID Version# 52 - 03/09/2004 - 12:44pm - CHRISM - develop
*** Subroutine: SOE.PRINT.BID
*-------------------------------------------------------------------------*
*** This subroutine prints/faxes bids/quotations.  Includes page 1 of n
*** logic as well as new OE.DESC.GET and new Lot Billing. This is a laser
*** form with laser printer commands.
*-------------------------------------------------------------------------*
*** Variables:
***       OID         - Order ID                                      [In]
***       GEN         - Order generation                              [In]
***       STATUS      - Print status determines which form will print (In)
***       PSTYLE.OVRD - Print style override                          (In)
***       PRT.ON      - Printer on flag                               (In)
***       DRPT        - Report Defaults                               [In]
*-------------------------------------------------------------------------*
*** Common: LED, LD, PRD, PRD.BR, CUS, and CUSS are read but not written.
***         JAVA.PROC$, INVOICE.COPY.CT$, and PHANTOM.PROC are used but
***         not written.
*-------------------------------------------------------------------------*

          SV.GEN = GEN

          DIM PSTYL(10)

          UT.OPEN.FILE "PRINT.STYLES",PSTYLFILE,ERR.MSG
          IF ERR.MSG THEN RETURN

          PG.LGTH = 60
          FT.LGTH  = 0
          BOD.LINES = 31
          IF DRPT<29> THEN FAX.FLAG = YES ELSE FAX.FLAG = NO
          *IF FAX.FLAG THEN
*            PG.LGTH    = 30
             FTR.MSG    = "Subtotal"
             FTR.MSG<2> = "S&H CHGS"
             FTR.MSG<3> = "Sales Tax"
             FTR.MSG<4> = "Amount Due"
*         END ELSE
*            FTR.MSG    = ''
*         ENDIF FAX.FLAG THEN

          IF NOT(PHANTOM.PROC) AND NOT(PRT.ON) AND NOT(JAVA.PROC$) THEN
             WINDOW 15,8,50,5
             IF FAX.FLAG THEN
                PRINT @(0,1):'Faxing .... ':OID
             END ELSE
                PRINT @(0,1):'Printing .... ':OID
             END
          END

          MATREAD LED FROM LEDFILE,OID ELSE GOTO FINISH
*LOT
          IF LED(98)<1,GEN> THEN LOT.FLAG = YES ELSE LOT.FLAG = NO

          OE.GET.QSIGN QSIGN,OID,GEN
          BR     = LED(2)<1,GEN,1>
          SHIP.BR = LED(2)<1,GEN,2>
          READV BR.EN FROM TERRFILE,BR,4 ELSE BR.EN = ''
          READ CUS.BR FROM CUSFILE,BR.EN ELSE CUS.BR=''
          PRC.PHONES = CUS.BR<17>
          PRC.BR.PHONES = PRC.PHONES<1,1>
          IF PRC.PHONES<1,2> THEN
             PRC.BR.PHONES := ' Fax ':PRC.PHONES<1,2>
          END
          IF STATUS#'B' THEN
             READV BR.EN FROM TERRFILE,SHIP.BR,4 ELSE BR.EN = ''
             READ CUS.BR FROM CUSFILE,BR.EN ELSE CUS.BR=''
          END
          *** Code to print "Greensboro Plumbing Supply".
          *SHP.DATE = LED(9)<1,GEN>
          *IF SHP.DATE < 16938 THEN
          *BR.ADDR = 'GREENSBORO PLUMBING SUPPLY'
          *END ELSE
          BR.ADDR =  CUS.BR<1>
          *END
          IF CUS.BR<2,1> THEN BR.ADDR<-1> = CUS.BR<2,1>
          IF CUS.BR<2,2> THEN BR.ADDR<-1> = CUS.BR<2,2>
          BR.ADDR<-1> = CUS.BR<3>:' ':CUS.BR<4>:' ':CUS.BR<5>
          CONTACTS = RAISE(OCONV(CUS.BR<16>,"MCU"))

          FINDSTR "FAX" IN CONTACTS SETTING PPOS ELSE PPOS = 0
          IF PPOS THEN
             IF CUS.BR<17,PPOS> # '' THEN
                FAX.PHONE = '  Fax ':CUS.BR<17,PPOS>
             END ELSE
                FAX.PHONE = ''
             END
          END ELSE
             FAX.PHONE = ''
          END

          BR.ADDR<-1> = CUS.BR<17,1>:FAX.PHONE
          BT.CN  = LED(1)<1,GEN>
          ST.CN  = LED(5)<1,GEN>
          GET.CUS BR,BT.CN,ST.CN,QSIGN
          INVN    = LED(8)<1,GEN> + 0

          IF INVN=0 THEN
             PRT.LDIDS = LED(49)
             CONVERT VM TO AM IN PRT.LDIDS
          END ELSE
             PRT.LDIDS = LED(48)<1,GEN>
             CONVERT SVM TO AM IN PRT.LDIDS
          END

          IF NOT(PRT.ON) THEN
             PRINTER.ON "BID",RPT.DFLT=DRPT
          END

          GOSUB INIT


          IF ALL.GENS THEN
             PRT.LDIDS = LED(49)
             CONVERT VM TO AM IN PRT.LDIDS
          END

          LDID.CT = DCOUNT(PRT.LDIDS,AM)
          FOR LD.NO = 1 TO LDID.CT
             LDID   = PRT.LDIDS<LD.NO>
             IF ALL.GENS THEN
                NUM.GENS = DCOUNT(LED(12),VM)
                FOR GN = 1 TO NUM.GENS
                   LOCATE LDID IN LED(48)<1,GN> SETTING POS THEN
                      GID = GN
                   END ELSE
                      GOTO SKIPGN
                   END
                   LOCATE GID IN LED(12)<1> SETTING GEN ELSE GEN = 1
                   IF LED(6)<1,GEN> = "X" OR LED(6)<1,GEN> = "I" OR LED(6)<1,GEN> = "Y" OR LED(6)<1,GEN> = "$" THEN
                      GOTO SKIPGN
                   END
SKIPGN:         NEXT GN
             END
             GOSUB PRT.LINE
          NEXT LD.NO

          GEN = SV.GEN

*---------
*LOT
          IF LOT.FLAG THEN
             RUNNING.TOTAL = COL.TOTAL<1,COL.CT>
       *     OE.LOT.GET.XCURR ,S.XRATE
       *     RUNNING.TOTAL = OCONV(LD(67)<1,1>/S.XRATE,'MR9')
          END ELSE
             RUNNING.TOTAL = COL.TOTAL<1,COL.CT,1>
          END


          IF NOT(NO.TOLS) THEN
             IF SHIP.VIA = "BIDTAX" THEN
             SHOW.TAX=YES
             END


             GOSUB PRINT.TOTALS
             IF STATUS = 'B' AND SHOW.TAX=NO THEN
                BLINE += 1
                TOTAL.COMMENT = ''
                PRT.STR = SPACE(TOTAL.SPACES-LEN(TOTAL.COMMENT)-12)
                PRT.STR = PRT.STR:TOTAL.COMMENT
                BOD<BLINE> = PRT.STR
             END
          END


          GOSUB ADD.FTR


          PRINT CHAR(27):"&l1e6D":NORM:
          PGS = INT((BLINE + BOD.LINES-1)/BOD.LINES)
          GOSUB HEADER
          GOSUB PRTBOD


          IF NOT(PRT.ON) THEN
             PRINTER.OFF
          END

          GOTO FINISH
*-------------------------------------------------------------------------*
INIT:     *
          PAGE    = 0
          BO.CT   = 0
          LINE.CT = 0
          SHOW.TAX = NO
* Prepass for subtotal pricing detail Y/N
          NO.PRICING  = ''

          SLPI       = CHAR(27):"&l6D"
          ELPI       = CHAR(27):"&l8D"

          SMALL      = CHAR(27):'(8U'
          SMALL     := CHAR(27):'(s0p16.67h8.5v0s0b0T'
          MED        = CHAR(27):"(8U":CHAR(27):'(s0p12h0s3b3T'
          SUP.SMALL  = CHAR(27):"(8U":CHAR(27):'(s0p20h0s0b0T'
          NORM       = CHAR(27):'(8U'
          NORM      := CHAR(27):'(s0p10h12v0s0b3T'
          NORM.BOLD  = CHAR(27):'(8U'
          NORM.BOLD := CHAR(27):'(s0p10h12v0s1b3T'
          LARGE      = CHAR(27):'(8U'
          LARGE     := CHAR(27):'(s1p10h14v0s3b3T'
          XLARGE     = CHAR(27):'(8U'
          XLARGE    := CHAR(27):'(s0p8h8v0s3b3T'

          FRST.DET   = 1
          LD.CT = DCOUNT(PRT.LDIDS,AM)
          FOR LD.NO = 1 TO LD.CT
          LDID  = PRT.LDIDS<LD.NO>
          LD.GET LDID

          BT.CN  = LED(1)<1,GEN>
          IF BT.CN = '675' THEN
          LD(21) = '1'
          END


          IF LD(1)='S' THEN
             IF LD(21) = '' THEN
* NO PRICING
                FOR DL = FRST.DET TO LD.NO
                NO.PRICING<DL> = YES
                NEXT DL
             END
             FRST.DET = LD.NO + 1
          END
          NEXT LD.NO
          INV.AMT    = LED(15)<1,GEN>
          BOD        = ''
          BLINE      = 0
          PRINT.PICK = NO
          CASH.SALE  = NO
          SSPC       = 21
          BEGIN CASE
          CASE STATUS = 'B'
             DOC.ID   = 'Quotation'
             ORD.ID   = OID
             DOC.TYPE = 'B'
          CASE OTHERWISE
             IF INV.AMT <= 0 THEN
                DOC.ID   = 'Acknowledgement'
                STYLE.ID = 'BID'
             END ELSE
                DOC.ID   = ' Return Goods'
                STYLE.ID = 'BID'
             END
             ORD.ID   = OID
             DOC.TYPE = 'S'
          END CASE
          SOE.CREDIT.CHECK ST.CN,,COD,PRT.MSG,NO.SHIP,,,OID,GEN
          IF COD THEN
             COD.MSG = '** C.O.D. ** C.O.D. ** C.O.D. **'
          END ELSE
             COD.MSG = ''
          END

          IF DRPT<27>='HOLD' THEN
             USE.DOC.TYPE = DOC.TYPE:VM:1
          END ELSE
             USE.DOC.TYPE = DOC.TYPE
          END

          OE.LOG.PRINT OID,GEN,USE.DOC.TYPE,DOC.ID,REPRINT

   * Get Print style record
          BEGIN CASE
          CASE PSTYLE.OVRD#''
             STYLE.ID = PSTYLE.OVRD
          CASE LED(77)<1,GEN>
             STYLE.ID = LED(77)<1,GEN>
          CASE OTHERWISE
             STYLE.ID = 'NET'
          END CASE

          IF STATUS = 'B' THEN
          IF INV.AMT >=0 AND PSTYLE.OVRD='' THEN
          STYLE.ID = 'BLIND'
          END ELSE
          STYLE.ID = 'NET'
          END
          END

          GOSUB GET.PSTYLE

          DOC.FORM.SPEC = ''
          IF STATUS = 'B' THEN
             READ DOC.FORM.REC FROM CTRLFILE,'BID.FORM.TSMITH' ELSE DOC.FORM.REC = ''
          END ELSE
             READ DOC.FORM.REC FROM CTRLFILE,'ACK.FORM' ELSE DOC.FORM.REC = ''
          END
          IF DOC.FORM.REC THEN
             GOSUB CNVRT.FORM
          END

          BEGIN CASE
          CASE STATUS = 'B'
             COLUMN.HEADING = 'Quote Qty     Product Description '
          CASE OTHERWISE
             COLUMN.HEADING = " Ordered              Product Description"
          END CASE
    * Compile column heading line from print style record
          TOTAL.SPACES = COL.START
          FMT = 'L#':COL.START
          COLUMN.HEADING = COLUMN.HEADING FMT
          FOR COL = 1 TO COL.CT
          LGTH = FIELD(COL.FRMTS<1,COL>,'#',2)+0
          FRMT = 'L#':LGTH
          IF COL=COL.CT THEN
             TOTAL.FRMT = COL.FRMTS<1,COL>
          END ELSE
             TOTAL.SPACES = TOTAL.SPACES + LGTH
          END
          COLUMN.HEADING = COLUMN.HEADING:COL.HEADS<1,COL> FRMT
          NEXT COL
          TOTAL.FMT = 'L#':TOTAL.SPACES

          NO.TOLS  = NOT(COL.EXTDS<1,COL.CT>)
          NET.TOLS = (COL.BASIS<1,COL.CT>=1 OR COL.BASIS<1,COL.CT>=2)

          GOSUB GET.TOTALS
          PRINT.CREDIT.MSG = NO
          IF PRINT.CREDIT.MSG THEN
             FT.LGTH  += 3
          END
          CUS.PO   = LED(13)<1,GEN>
          REL.NO   = LED(65)<1,GEN>

          FRGHT.OUT=LED(69)<1,GEN,1>
          FRGHT.IN =LED(69)<1,GEN,2>

          FRGHT.ALLW=FRGHT.OUT+FRGHT.IN

          IF FRGHT.ALLW<2 THEN
             FRGT = 'No'
          END ELSE
             FRGT = 'Yes'
          END

          SALESMAN = LED(72)<1,GEN>
          READV SALESMAN FROM INIFILE,SALESMAN,3 ELSE NULL
          WRITER   = LED(73)<1,GEN>
          READV WRITER FROM INIFILE,WRITER,3 ELSE NULL
          DID      = TRANS('INITIALS',LED(73)<1,GEN>,104,'X')
          ORD.BY =  LED(68)<1,GEN>
*         READV ORD.BY FROM INIFILE,ORD.BY,3 ELSE NULL
          SHIP.VIA = LED(70)<1,GEN>
          ORD.DATE = LED(4)<1,GEN>
          SHP.DATE = LED(9)<1,GEN>
          REQ.DATE = OCONV(LED(10)<1,GEN> ,'D2/')
          EXP.DATE = LED(31)<1,GEN>
          PHONE.NO = CUS(17)<1,1>
          TERMS.ID = LED(29)<1,GEN>
          READV TERMS.DESC FROM TERMSFILE,TERMS.ID,1 ELSE TERMS.DESC=TERMS.ID
*B2B
          SHIP.ADDR = LED(78)<1,GEN,6>
          IF NOT(SHIP.ADDR) THEN SHIP.ADDR = CUSS(1)
          IF LED(78)<1,GEN,1> THEN SHIP.ADDR<-1>  = LED(78)<1,GEN,1>
          IF LED(78)<1,GEN,2> THEN SHIP.ADDR<-1>  = LED(78)<1,GEN,2>
          SHIP.ADDR<-1>  = TRIM(LED(78)<1,GEN,3>):" ":LED(75)<1,GEN>"L#10"

          *** Find the desired billing address as set up by the customer.
          BEGIN CASE
          *** If the ShipTo is flagged to use the ShipTo for the billing
          *** address...
          CASE CUSS(97)
             BILL.ADDR = SHIP.ADDR<1>
             IF CUSS(2)<1,1> # '' THEN BILL.ADDR<-1> = CUSS(2)<1,1>
             IF CUSS(2)<1,2> # '' THEN BILL.ADDR<-1> = CUSS(2)<1,2>
             BILL.ADDR<-1> = TRIM(CUSS(3)):", ":CUSS(4)"L#4":CUSS(5)"L#14"
          *** If the ShipTo is flagged to use an Alternate ShipTo...
          CASE CUSS(91)<1,1>
             BILL.ADDR = CUSS(91)<1,1>
             IF CUSS(92)<1,1> # '' THEN BILL.ADDR<-1> = CUSS(92)<1,1>
             IF CUSS(92)<1,2> # '' THEN BILL.ADDR<-1> = CUSS(92)<1,2>
             ADDR.STRING  = TRIM(CUSS(93)):", ":CUSS(94) "L#4"
             ADDR.STRING := CUSS(95)"L#14"
             BILL.ADDR<-1> = ADDR.STRING
          *** If the BillTo is flagged to use an Alternate BillTo...
          CASE CUS(91)<1,1>
             BILL.ADDR = CUS(91)<1,1>
             IF CUS(92)<1,1> # '' THEN BILL.ADDR<-1> = CUS(92)<1,1>
             IF CUS(92)<1,2> # '' THEN BILL.ADDR<-1> = CUS(92)<1,2>
             BILL.ADDR<-1> = TRIM(CUS(93)):", ":CUS(94)"L#4":CUS(95)"L#14"
          *** Otherwise, use normal billing address...
          CASE OTHERWISE
             BILL.ADDR = CUS(1)
             IF CUS(2)<1,1> # '' THEN BILL.ADDR<-1> = CUS(2)<1,1>
             IF CUS(2)<1,2> # '' THEN BILL.ADDR<-1> = CUS(2)<1,2>
             BILL.ADDR<-1> = TRIM(CUS(3)):", ":CUS(4)"L#4":CUS(5)"L#14"
          END CASE

          ITEM.TAG.INFO  = '' ;* Item tag info
          OE.ITEM.TAG.READ OID,,,,ITEM.TAG.INFO

*          SHP.INST = ''
         SHP.INST = LED(74)<1,GEN>
          BO.FLAG   = YES
          ** CODE CHANGE FOR DKJ405 BEGIN
          **IF SHP.INST<1,1,1> = "!NOBO" THEN
          SHIP.INST = SHP.INST<1,1,1>
          SHIP.INST = UPCASE(SHIP.INST)

          IF SHIP.INST = "!NOBO" THEN
          ** CODE CHANGE FOR DKJ405 END
             BO.FLAG = NO
             SHP.INST    = DELETE(SHP.INST,1,1,1)
          END
          IF SHP.INST#'' THEN
             BLINE += 1
             BOD<BLINE> = SPACE(SSPC):'********* Shipping Instructions **********'
             CT = DCOUNT(SHP.INST,SVM)
             FOR JJ=1 TO CT
             BLINE += 1
             BOD<BLINE> = SPACE(SSPC):'* ':SHP.INST<1,1,JJ>"L#38":' *'
             NEXT JJ
             BLINE += 1
             BOD<BLINE> = SPACE(SSPC):STR('*',42)
          END

          FOLD.STRING SHP.INST,30,NEWINST,1,SHIP.CT

          WHSE.MSG = 'Shp ':SHIP.BR "L#4": 'Prc ':BR "L#3"
          IF STATUS # 'B' THEN ORD.MSG = 'ORDER' ELSE ORD.MSG = 'QUOTE'
          IF LED(61)<1,GEN> THEN
             TAX.MSG = 'N'
          END ELSE
             TAX.MSG = 'Y'
          END
          PRT.TIME =  TIMEDATE()
          BO.PNS = ''

          RETURN
*-------------------------------------------------------------------------*
GET.PSTYLE: *
    * Get Print style record
          MATREAD PSTYL FROM PSTYLFILE,STYLE.ID ELSE
             MATREAD PSTYL FROM PSTYLFILE,'DEFAULT' ELSE
                MAT PSTYL = ''
                PSTYL(3) = 69
                PSTYL(4) = 'R2#10'
                PSTYL(5) = 1
                PSTYL(6) = 1
                PSTYL(7) = 'Net Price'
             END
          END
          COL.START = PSTYL(3)
          COL.FRMTS = PSTYL(4)
          COL.BASIS = PSTYL(5)
          COL.EXTDS = PSTYL(6)
          COL.HEADS = PSTYL(7)
          ALT.DESC  = PSTYL(8)
          ALL.GENS  = PSTYL(9)
          COL.CT    = DCOUNT(COL.BASIS,VM)
          COL.TOTAL = ''
          SUB.TOTAL = ''
          SUBT.SW   = NO

          RETURN
*-------------------------------------------------------------------------*
CNVRT.FORM: * Convert the values we picked up from our Form overlay
            * Control Record AND from the Print Style Id we're using,
            * that was set up in Print Style Maintenance...

*** Get data out from the Form Overlay Control Record we're using...

          *** We should find this string in the Row where our Invoice's
          *** data columns were set up...
          FINDSTR '@PRINT.STYLE' IN DOC.FORM.REC SETTING AMC THEN
             *** Get the Print Style Width....
             FORM.STYLE.WIDTH = FIELD(DOC.FORM.REC<AMC>,',',2)
             *** Initialize our Total Width to be the Print Style Width...
             TOTAL.WIDTH      = FORM.STYLE.WIDTH

             TAMC = AMC - 1
             *** Go through each data column that's been set up in the
             *** current row...
             LOOP
             UNTIL DOC.FORM.REC<TAMC>[1,1] # '"' DO
             *** Add the width from each column to our Total Width...
             TOTAL.WIDTH += FIELD(DOC.FORM.REC<TAMC>,',',2)
             TAMC -= 1
             REPEAT

             *** Set our Start Column, where we'll be printing the values
             *** determined by our print style Id...
             COL.START    = TOTAL.WIDTH - FORM.STYLE.WIDTH
             DEL DOC.FORM.REC<AMC>

*** Now we'll go through the columns that were set up for the Print
*** Style Id we're using (set up in Print Style Maintenance)...

             STYLE.WIDTH  = 0
             WIDTH.INSERT = ''

             FOR CC = 1 TO COL.CT
             TWIDTH           = FIELD(COL.FRMTS<1,CC>,'#',2)
             WIDTH.INSERT<CC> = TWIDTH
             STYLE.WIDTH     += TWIDTH
             NEXT CC

             BEGIN CASE
             *** If the actual width of our Print Style Id columns is less
             *** than the width that our Form Overlay Control Record
             *** stated that it needed to be...
             CASE STYLE.WIDTH < FORM.STYLE.WIDTH
                CC = COL.CT
                LOOP
                UNTIL STYLE.WIDTH >= FORM.STYLE.WIDTH DO
                *** Increase a columns width...
                WIDTH.INSERT<CC> += 1
                NEW.FRMT  = FIELD(COL.FRMTS<1,CC>,'#',1):'#'
                NEW.FRMT := WIDTH.INSERT<CC>
                COL.FRMTS<1,CC> = NEW.FRMT

                CC -= 1
                *** If we've already increased each columns width
                *** once, start with the first one again...
                IF CC < 1 THEN CC = COL.CT
                STYLE.WIDTH += 1
                REPEAT
             *** If the actual width of our Print Style Id columns is
             *** greater than the width that our Form Overlay Control
             *** Record stated that it needed to be...
             CASE STYLE.WIDTH > FORM.STYLE.WIDTH
                CC = 1
                LOOP
                UNTIL STYLE.WIDTH <= FORM.STYLE.WIDTH DO
                *** Decrease a columns width...
                WIDTH.INSERT<CC> -= 1
                NEW.FRMT  = FIELD(COL.FRMTS<1,CC>,'#',1):'#'
                NEW.FRMT := WIDTH.INSERT<CC>
                COL.FRMTS<1,CC> = NEW.FRMT

                CC += 1
                *** If we've already decreased each columns width
                *** once, start with the first one again...
                IF CC > COL.CT THEN CC = 1
                STYLE.WIDTH -= 1
                REPEAT
             END CASE

             FOR CC = 1 TO COL.CT
             TINSERT  = '"':COL.HEADS<1,CC>:'",'
             TINSERT := WIDTH.INSERT<CC>

             INS TINSERT BEFORE DOC.FORM.REC<AMC+CC-1>
             NEXT CC

             FTR.TEXT.LGTH = 79-WIDTH.INSERT<COL.CT>
             FTR.FMT       = 'R2#':WIDTH.INSERT<COL.CT>
          END

          RETURN
*-------------------------------------------------------------------------*
HEADER:   *
          PAGE    = PAGE + 1
          LINE.CT = PG.LGTH
          IF FAX.FLAG THEN
*            PRINT '@+INCLUDE[/usr/vsifax/eclipse/docs/INV,ul-down]'
*            PRINT CHAR(27):"*p0Y":
          END


          *** Print the macro
          MACRO.ID = 'BID~':STYLE.ID
          GOSUB SET.MACRO

             *** Print the logo
          *IF USER.ID = 'TSMITH' THEN
          PRINT CHAR(27):"*p25y*p50X":
          PTR.MACRO.PRINT ERR.MSG, 'HUB', DRPT
          PRINT CHAR(27):"*p0Y":
          PRINT NORM:SLPI:
          PRINT ; PRINT
          *END ELSE
          *PRINT CHAR(27):"*p25y*p50X":
          *PTR.MACRO.PRINT ERR.MSG, 'PICK', DRPT
          *PRINT CHAR(27):"*p0Y":
          *PRINT NORM:SLPI:
          *PRINT ; PRINT
          *END


          PRINT CHAR(27):"*p0Y":
          PRINT NORM:SLPI:
          PRINT
          PRINT
          IF STATUS = 'B' THEN
             PRINT SPACE(61):XLARGE:DOC.ID:NORM
          END ELSE
             PRINT SPACE(57):XLARGE:DOC.ID:NORM
          END

          PRINT CHAR(27):"*p50Y":SLPI

          PRINT ''
          PRINT ''
          PRINT ''
          FOR KK = 1 TO 5
             PRINT '' "L#1":LARGE:  BR.ADDR<KK>:NORM
          NEXT KK



          PRINT CHAR(27):"*p165Y":SLPI
          PRINT
          PRINT
          PRINT '' "L#57" :OCONV(ORD.DATE,'D2/')   "L#10":
          PRINT ORD.ID                             "L#16"

          PRINT CHAR(27):"*p315Y"
          PRINT '' "L#57":SMALL:"ORDER TO:":NORM:ELPI
          PRINT '' "L#57":SUP.SMALL:BR.ADDR<1> "L#30":NORM
          PRINT '' "L#57":SUP.SMALL:BR.ADDR<2> "L#30":NORM
          PRINT '' "L#57":SUP.SMALL:BR.ADDR<3> "L#30":NORM:PAGE  "R#5"
          PRINT '' "L#57":SUP.SMALL:BR.ADDR<4> "L#30":NORM
          PRINT CHAR(27):"*p490Y":SLPI

*         PRINT '' "L#48":SUP.SMALL:"Past due invoices may be subject to 1.5% late charge":NORM

          PRINT CHAR(27):"*p565Y":SLPI
          IF STATUS='B' THEN
             PRINT SPACE(9):SMALL:"QUOTE TO:":NORM:
          END ELSE
             PRINT SPACE(9):SMALL:"SOLD TO:":NORM:
          END
          PRINT CHAR(27):"*p565Y":SLPI
          PRINT SPACE(47):SMALL:"SHIP TO:":NORM

          FOR KK=1 TO 4
          PRINT SPACE(9):BILL.ADDR<KK>'L#38': SHIP.ADDR<KK>  "L#30"'L#30'
          NEXT KK

*------Header Info------*
          PRINT CHAR(27):"*p890Y"
          PRINT
          PRINT
          TEXT = ST.CN;  WIDTH=5;    GOSUB CENTER.TEXT
          PRINT '    ':TEXT          'L#9 ':
          TEXT = CUS.PO;  WIDTH=22;    GOSUB CENTER.TEXT
          PRINT TEXT                'L#22 ':
          TEXT = REL.NO;  WIDTH=21;    GOSUB CENTER.TEXT
          PRINT TEXT                'L#21 ':

*         PRINT ORD.WITH              'L#19 ':
*         PRINT BR                    'R#2':'   ':

          TEXT = SALESMAN;  WIDTH=20;    GOSUB CENTER.TEXT
          PRINT TEXT            'L#20'
          PRINT
          PRINT
          TEXT = WRITER;  WIDTH=16;    GOSUB CENTER.TEXT
          PRINT ' ':TEXT            'L#16 ':

          TEXT = DID;  WIDTH=12;    GOSUB CENTER.TEXT
          PRINT ' ':NORM.BOLD:TEXT               'L#12 ':NORM:
          TEXT = ' ':SHIP.VIA;  WIDTH=13;    GOSUB CENTER.TEXT
          PRINT TEXT              'L#15 ':
          TEXT = ' ':TERMS.DESC;  WIDTH=13;    GOSUB CENTER.TEXT
          PRINT TEXT            'L#13 ':
          TEXT = OCONV(SHP.DATE,'D2/'); WIDTH=10;   GOSUB CENTER.TEXT
          PRINT ' ':TEXT             'L#10 ':
          TEXT = FRGT;  WIDTH=3;    GOSUB CENTER.TEXT
          PRINT ' ':TEXT
          PRINT
          BO.HEADING = NO

          RETURN
*-------------------------------------------------------------------------*
PRTBOD:   *
          PLINE = 1
          LINEX = 0
          LOOP
          LINEX += 1
          IF LINEX > BLINE THEN EXIT
          IF PLINE > BOD.LINES THEN GOSUB TOP; PLINE=1
          PRINT BOD<LINEX>
          PLINE += 1
          REPEAT

          FOR X = PLINE TO BOD.LINES
          PRINT
          NEXT X
          GOSUB FOOTER

          RETURN
*-------------------------------------------------------------------------*
TOP:    *
          PRINT "     *** Continued on Next Page ***"
          GOSUB FFEED
          GOSUB HEADER

          RETURN
*-------------------------------------------------------------------------*
* NEW SUBTOTALS LOGIC 02/10/00 - FROM SG PLUMBING
*-------------------------------------------------------------------------*
SUBTOTALS:*
          PRT.STR1 = SPACE(COL.START)
          PRT.STR2 = SPACE(COL.START-LEN(SUBT.DESC)):SUBT.DESC
          FOR COL = 1 TO COL.CT
          LGTH = FIELD(COL.FRMTS<1,COL>,'#',2)
          IF COL.EXTDS<1,COL> THEN
             PRT.STR1 = PRT.STR1:STR('-',LGTH)
             IF SUBT.SW THEN
                PRT.STR2 = PRT.STR2:OCONV(LD(8)<1,GEN>,'MR2')*QSIGN COL.FRMTS<1,COL>
             END
          END ELSE
             IF COL = 2 THEN
                PRT.STR1 = PRT.STR1:STR('-',LGTH)
                PRT.STR2 = PRT.STR2:OCONV(LD(8)<1,GEN>,'MR2')*QSIGN COL.FRMTS<1,COL>
             END ELSE
                PRT.STR1 = PRT.STR1:SPACE(LGTH)
                PRT.STR2 = PRT.STR2:SPACE(LGTH)
             END
          END
          NEXT COL

          BLINE += 1
          BOD<BLINE> = PRT.STR1
          BLINE += 1
          BOD<BLINE> = PRT.STR2

          RETURN
*-------------------------------------------------------------------------*
GET.TOTALS: *
          SOE.CALC.CASH OID,GEN,AMT.DUE,AMT.PAID,CASH.DISC
          OE.ORDER.TOTAL OID,GEN,QSIGN,,,FREIGHT,HANDLING,TAX.AMT,FET.AMT
          IF STATUS='B' THEN CASH.DISC = 0
          AMT.PAID  = OCONV(AMT.PAID,'MR2')
          FREIGHT   = OCONV(FREIGHT,'MR2')
          HANDLING  = OCONV(HANDLING,'MR2')
          *IF STATUS = 'B' AND NOT(SHOW.TAX) THEN
          *TAX.AMT = ''
          *END ELSE
          TAX.AMT   = OCONV(TAX.AMT,'MR2')
          *END
          CASH.DISC = OCONV(CASH.DISC,'MR2')

  * Find service Charges , put in OE.ORDER.TOTAL when possible
          LOCATE 'SC' IN LED(24)<1,GEN> SETTING POS THEN
             SERV.CHRG = -OCONV(LED(26)<1,GEN,POS>,'MR2')
          END ELSE
             SERV.CHRG = 0
          END

          RETURN
*-------------------------------------------------------------------------*
PRINT.TOTALS: *
*         IF FREIGHT THEN
*            TOTAL.COMMENT = 'Freight'
*            TOTAL.AMT     = FREIGHT
*            GOSUB PRINT.TOTAL
*            RUNNING.TOTAL += TOTAL.AMT
*         END
*         IF HANDLING THEN
*            TOTAL.COMMENT = 'Handling'
*            TOTAL.AMT     = HANDLING
*            GOSUB PRINT.TOTAL
*            RUNNING.TOTAL += TOTAL.AMT
*         END
          IF SERV.CHRG THEN
             TOTAL.COMMENT = 'Service Charge'
             TOTAL.AMT     = SERV.CHRG
             GOSUB PRINT.TOTAL
             RUNNING.TOTAL += TOTAL.AMT
          END

*         GOSUB PRINT.TOTAL.LINE
*         IF STATUS='B' THEN
*            TOTAL.COMMENT = 'Quote Total'
*         END ELSE
*            TOTAL.COMMENT = 'Invoice Amount'
*         END
*         TOTAL.AMT     = RUNNING.TOTAL
*         GOSUB PRINT.TOTAL

          PRINT.AMT.DUE = NO

          IF AMT.PAID THEN
             PRINT.AMT.DUE = YES
             IF LED(8)<1,GEN>='' THEN
                TOTAL.COMMENT = 'Less cash paid'
                TOTAL.AMT     = AMT.PAID
                GOSUB PRINT.TOTAL
                RUNNING.TOTAL = RUNNING.TOTAL + TOTAL.AMT
             END ELSE
                AR.ID = OID:'.':LED(8)<1,GEN>"R%3"
                SOE.PAYMENTS.DISC AR.ID,PAY.IDS,PAY.DTS,PAY.AMTS,DISC.TAKEN
                IF DISC.TAKEN THEN
                   TOTAL.COMMENT = 'Less discount taken'
                   TOTAL.AMT     = OCONV(DISC.TAKEN,"MR2")
                   CASH.DISC     = 0
                   GOSUB PRINT.TOTAL
                   RUNNING.TOTAL = RUNNING.TOTAL + TOTAL.AMT
                END
                PCT = DCOUNT(PAY.IDS,VM)
                FOR PYN = 1 TO PCT
                PAY.ID  = PAY.IDS<1,PYN>
                PAY.DT  = PAY.DTS<1,PYN>
                PAY.AMT = PAY.AMTS<1,PYN>
                IF PAY.DT=DATE() THEN
                   TOTAL.COMMENT = 'Amount paid today # ':PAY.ID
                END ELSE
                   TOTAL.COMMENT = 'Prior Deposit on ':OCONV(PAY.DT,'D2/')"L#8"
                END
                TOTAL.AMT = OCONV(PAY.AMT,"MR2")
                GOSUB PRINT.TOTAL
                RUNNING.TOTAL = RUNNING.TOTAL + TOTAL.AMT
                NEXT PYN
             END
          END

*         IF PRINT.AMT.DUE THEN
*            GOSUB PRINT.TOTAL.LINE
*            TOTAL.COMMENT = '** AMOUNT DUE **'
*            TOTAL.AMT     = RUNNING.TOTAL
*            GOSUB PRINT.TOTAL
*         END

          RETURN
*-------------------------------------------------------------------------*
PRINT.TOTAL: *
          PRT.STR = TOTAL.COMMENT"R#56" TOTAL.FMT
          PRT.STR = PRT.STR:TOTAL.AMT TOTAL.FRMT
          BLINE += 1
          BOD<BLINE> = PRT.STR

          RETURN
*-------------------------------------------------------------------------*
PRINT.TOTAL.LINE: *
          LGTH = FIELD(TOTAL.FRMT,"#",2)
          PRT.STR = SPACE(TOTAL.SPACES):STR('-',LGTH)
          BLINE += 1
          BOD<BLINE> = PRT.STR

          RETURN
*-------------------------------------------------------------------------*
PRT.LINE: *
          LD.GET LDID
          PN = LD(1)
          BEGIN CASE
          CASE NUM(PN)
             QS = (SUM(LD(5)<1,GEN>) + SUM(LD(6)<1,GEN>)) * QSIGN
             IF NOT(ALL.GENS) THEN
                IF QS#0 THEN GOSUB PRT.PN
             END ELSE
                GOSUB PRT.PN
             END
          CASE PN='C'
             OE.DESC.GET DESC,ALT.DESC,"SOE Printing"
             GOSUB PRT.XDESC
          CASE PN='S';  GOSUB PRT.SUBT
          END CASE

          RETURN
*-------------------------------------------------------------------------*
PRT.PN:   *
          TOT.QS = QS
          LINE.CT    += 1
          GET.ALL.PRD BR,PN,QSIGN,GROUP
          SHP.TYP.LOCS = LD(7)<1,GEN>
          LOC.CT = DCOUNT(SHP.TYP.LOCS,SVM)
          LN.MSG = LINE.CT
          IF STATUS = 'B' THEN LOC.CT = 1
          FOR LOC = 1 TO LOC.CT
          IF PRD(3) = 9 THEN LOT.FLAG = YES ELSE LOT.FLAG = NO


          IF NOT(ALL.GENS) THEN
             IF QS=0 THEN GOTO NO.PTR
          END

          OE.DESC.GET DESC,ALT.DESC,"SOE Printing"
          *IF LD(36)<1,GEN,1> # '' THEN DESC<1,-1> = LD(36)<1,GEN,1>

*----Kits
          IF LD(31)#'' AND LD(38)<1,2> = '1' THEN
             KCMPS = LD(31)
             KQTYS = LD(30)
             KCMTS = LD(37)
             GET.KIT.COMPS KCMPS,KQTYS,45,DESC
          END
          IF NOT(LED(8)<1,GEN>) THEN
             QOPEN = TOT.QS
             DQS    = ''
          END ELSE
             OE.CALC.QOPEN OID,QSIGN,QOPEN
             IF LED(8)<1,GEN> THEN
                QOPEN += (SUM(LD(5)<1,GEN>) + SUM(LD(6)<1,GEN>)) * QSIGN
             END
             DQS = QS
          END
*LOT
          IF LOT.FLAG THEN
             DQS   = 1
             QS    = 1
             QOPEN = 1
          END
          SHP.TYP.LOC = SHP.TYP.LOCS<1,1,LOC>
          LOCA    = FIELD(FIELD(SHP.TYP.LOC,'~',2),'^',1)
          TAG     = FIELD(SHP.TYP.LOC,'^',2)
          TYPE    = FIELD(SHP.TYP.LOC,'~',1)
          IF LOCA = 'WHSE' THEN PRINT.PICK = YES
          IF TYPE = 'T' THEN
             DESC<1,-1> = '<<** ':QS:' Tagged to ':TAG[1,OID.LGTH$]:' **>>'
             LOCA = ''
          END
          BEGIN CASE
          CASE QS<0 AND TYPE='F';  LOCA = '**DEF '
          CASE QS>0 AND TYPE='D';  LOCA = '**DIR '
          CASE QS<0;               LOCA = '**RTN '
          END CASE


          IQ.TO.ALPHA PLNE(3),PRD(7),LD(23),QOPEN,Q1,U1,Q2,U2,QO.ALPHA
          IF LOC > 1 THEN QO.ALPHA = '"'
          PRT.STR = TRIM(QO.ALPHA)      "R#10"
          PRT.STR := PN "R#10 "
          PRT.STR = PRT.STR:DESC<1,1>   "L#35"

          IF ITEM.TAG.INFO THEN
             * Let user know how many labels go with this line
             OE.ITEM.TAG.GET.FORM.CMT OID,GEN,LDID,LBL.DATA
             LBL.CT = DCOUNT(LBL.DATA,AM)
             FOR LBL.NO = 2 TO LBL.CT
                DESC<1,-1> = LBL.DATA<LBL.NO>
             NEXT LBL.NO
          END

          SAVE.LINE = PRT.STR
*LOT
          IF LOT.FLAG THEN
             FORMS.GET.LOT.PRC "BID",LDID,GEN,ALL.GENS,UNT.PRC
             PRT.STR := UNT.PRC"R3#12"
             PRT.STR := UNT.PRC"R2#11"
             COL.TOTAL<1,COL.CT> += UNT.PRC
          END ELSE
             OE.GET.PSTYLE OID,GEN,COL.START,COL.FRMTS,COL.BASIS,COL.EXTDS,COL.CT,QS,PRT.STR,COL.TOTAL,SUB.TOTAL
          END
          IF NO.PRICING<LD.NO> THEN PRT.STR = SAVE.LINE
          BLINE += 1
          BOD<BLINE> = PRT.STR
          DESC    = DELETE(DESC,1,1)
          GOSUB PRT.XDESC

NO.PTR:   NEXT LOC

*LOT
          IF LOT.FLAG THEN
             OE.LOT.PRINT.SETUP OID,GEN,'S','B',BLINE,SSPC,BOD,,ALL.GENS,LDID
          END

          RETURN
*-------------------------------------------------------------------------*
PRT.XDESC: *
          DESC.CT = DCOUNT(DESC,VM)
          FOR DLN = 1 TO DESC.CT
          PRT.STR = SPACE(SSPC):DESC<1,DLN>
          IF TRIM(PRT.STR) THEN
             BLINE += 1
             BOD<BLINE> = PRT.STR
          END
          NEXT DLN

          RETURN
*-------------------------------------------------------------------------*
PRT.SUBT: *
          IF NOT(NO.TOLS) THEN
             SUBT.SW = YES
             OE.DESC.GET DESC,ALT.DESC,"SOE Printing"
             SUBT.DESC = DESC<1,1>
             GOSUB SUBTOTALS
             DESC = DELETE(DESC,1,1)
             GOSUB PRT.XDESC
             SUBT.SW = NO
             SUB.TOTAL = ''
          END

          RETURN
*-------------------------------------------------------------------------*
ADD.FTR:  *
          IF FT.LGTH = 0 THEN RETURN
          PGS = INT((BLINE+BOD.LINES-1)/BOD.LINES)
          LAST.PG = PGS*BOD.LINES - BLINE
          IF LAST.PG >= FT.LGTH THEN
             ADD.LINES = LAST.PG - FT.LGTH
          END ELSE
             ADD.LINES = BOD.LINES + LAST.PG - FT.LGTH
          END
          FOR X = 1 TO ADD.LINES
          BLINE += 1
          BOD<BLINE> = ''
          NEXT X
          IF PRINT.CREDIT.MSG THEN
             BLINE += 1
             BOD<BLINE> = STR('+ ',35)
             BLINE += 1
             BOD<BLINE> = '+   Thank You For Your Business __________'
             BLINE += 1
             BOD<BLINE> = STR('+ ',35)
          END

          RETURN
*-------------------------------------------------------------------------*
FFEED:    *
          *** Print barcode.
          PRINT CHAR(27):"*p1750x*p3175Y":
          UT.PRINT.BARCODE ERR.CODE,'CODE128',150,25,7,ORD.ID

          PRINT CHAR(12):

          RETURN
*-------------------------------------------------------------------------*
FOOTER:   *
          PRINT CHAR(27):"*p2790Y":NORM
          PRINT NORM.BOLD:

          TFTR = SPACE(79)
          TFTR[79-WIDTH.INSERT<COL.CT>-LEN(FTR.MSG<1>)+1,LEN(FTR.MSG<1>)] = FTR.MSG<1>
          TFTR[79-WIDTH.INSERT<COL.CT>+1,WIDTH.INSERT<COL.CT>] = RUNNING.TOTAL FTR.FMT
          IF STYLE.ID='BLIND' OR STYLE.ID='BID' THEN
          PRINT
          END ELSE
          PRINT TFTR
          END
          *TFTR = DISC.MSG 'L#79'
          TFTR[79-WIDTH.INSERT<COL.CT>-LEN(FTR.MSG<2>)+1,LEN(FTR.MSG<2>)] = FTR.MSG<2>
          TFTR[79-WIDTH.INSERT<COL.CT>+1,WIDTH.INSERT<COL.CT>] = (FREIGHT + HANDLING) FTR.FMT
          IF STYLE.ID='BLIND' OR STYLE.ID='BID' THEN
          PRINT
          END ELSE
          PRINT TFTR
          END
          RUNNING.TOTAL += FREIGHT + HANDLING


          IF STATUS = 'B' AND SHOW.TAX=NO THEN
             PRINT
          END ELSE
          *   RUNNING.TOTAL += (FREIGHT + HANDLING)
             TFTR[79-WIDTH.INSERT<COL.CT>-LEN(FTR.MSG<3>)+1,LEN(FTR.MSG<3>)] = FTR.MSG<3>
             TFTR[79-WIDTH.INSERT<COL.CT>+1,WIDTH.INSERT<COL.CT>] = TAX.AMT FTR.FMT
             IF STYLE.ID='BLIND' OR STYLE.ID='BID' THEN
             PRINT
             END ELSE
             PRINT TFTR
             END
             RUNNING.TOTAL += TAX.AMT
             END

          PRINT
          TFTR = SPACE(79)
          TFTR[79-WIDTH.INSERT<COL.CT>-LEN(FTR.MSG<4>)+1,LEN(FTR.MSG<4>)] = FTR.MSG<4>
          TFTR[79-WIDTH.INSERT<COL.CT>+1,WIDTH.INSERT<COL.CT>] = RUNNING.TOTAL FTR.FMT
          IF STYLE.ID='BLIND' OR STYLE.ID='BID' THEN
          PRINT
          END ELSE
          PRINT TFTR
          END

          PRINT CHAR(27):"*p2800Y":NORM
          PRINT  NORM.BOLD:'This is a Quotation.':NORM
          PRINT  MED:'Prices are firm for 30 days, unless otherwise noted.'
          PRINT MED:'This is for Quotation purposes only.'
          PRINT MED:'Orders are subject to credit and contract approval.'
          PRINT  'Applicable taxes extra.':NORM
          GOSUB FFEED
         * PRINT CHAR(12):

          RETURN
*-------------------------------------------------------------------------*
DRAWSHADING: *** Draw shaded boxes to fill in headers

          PERC = 11   ;* Shade at 11%
          REST = 100  ;* Restore to 100%
          HGHT = 1    ;* All boxes are 1 char height

          FORMS.PRINT.SHADE PERC,1680, 190,2.3,HGHT,REST  ;* Inv Dt/Number
          FORMS.PRINT.SHADE PERC,2160, 340,0.7,HGHT,REST  ;* Page Number
          FORMS.PRINT.SHADE PERC,   0, 910,7.9,HGHT,REST  ;* 1st full line
          FORMS.PRINT.SHADE PERC,   0,1060,7.9,HGHT,REST  ;* 2nd full line
          FORMS.PRINT.SHADE PERC,   0,1210,7.9,HGHT,REST  ;* 3rd full line

          RETURN
*-------------------------------------------------------------------------*
SET.MACRO: *** Print macro or create if necessary

          MACRO.OK = ''

          *** Check to see if this macro is already loaded
          PTR.MACRO.ACTIVE MACRO.ID,PRT.SEQ

          *** If a sequence is returned, use to print macro immediately
          IF PRT.SEQ THEN GOTO PRT.MACRO

          *** Begin saving macro (suspend physical printing)
          PTR.MACRO.SAVE.ON MACRO.ID,MACRO.OK

          *** 'Print' the overlay - this does NOT physically print,
          *** anything between SAVE statements is only saved to macro
          DOC.FORM.CONVERT DOC.FORM.REC,DOC.FORM.SPEC
          DOC.FORM.PRINT DOC.FORM.SPEC,"1"
          GOSUB DRAWSHADING

          *** Stop saving macro (resume physical printing)
          PTR.MACRO.SAVE.OFF MACRO.ID,MACRO.OK,PRT.SEQ

PRT.MACRO: *** Print the macro with saved or newly created sequence

          IF PRT.SEQ THEN
             *** For each !, print CHAR(27) and the following characters
             CONVERT '!' TO AM IN PRT.SEQ
             ESC.CT = DCOUNT(PRT.SEQ,AM)
             FOR XX = 2 TO ESC.CT
                PRINT CHAR(27):PRT.SEQ<XX>:
             NEXT XX
             PRINT
          END

          RETURN
*-------------------------------------------------------------------------*
CENTER.TEXT:    *** Center text in a field of the specified width.
          LMARGIN = INT((WIDTH - LEN(TEXT)) / 2)
          RMARGIN = WIDTH - LMARGIN - LEN(TEXT)
          TEXT = SPACE(LMARGIN):TEXT:SPACE(RMARGIN)

          RETURN
*-------------------------------------------------------------------------*
FINISH:   *
          IF NOT(PHANTOM.PROC) AND NOT(PRT.ON) AND NOT(JAVA.PROC$) THEN
             WINDOW.CLOSE
          END

          RETURN
*-------------------------------------------------------------------------*
!TSMITH~04/10/15~11:33
